#include <stdio.h>
#include "sys/types.h"
#include <unistd.h>

int main(int argc, char const *argv[])
{
    printf("主进程开始执行\n");
    pid_t pid = fork();
    if(pid==0){
        printf("child process,id=%d\n",getpid());
        //路径是编译后生成的other可执行程序，而不是.c文件
        char path[]="/home/zzzz/桌面/gataway/test/process_test/other";
        //传给对方mian的参数列表，第一位固定是地址，最后一位固定是NULL，中间自定义
        char *argv[]={path,"app",NULL};
        // 使用默认环境变量
        char *envp[] = {NULL}; 
        //清空子进程内存，父进程正常运行，子进程带着参数执行other程序（进程号是同一个）
        //参数：地址、参数列表、环境变量（传不传都是null）
        execve(path,argv,NULL);
        //因为子进程正常执行other程序，能到这说明失败了
        printf("execve failed\n");
        return -1;
    }
    else{
        //等待子进程结束，父进程才再结束，比较合理
        printf("parent process,id=%d\n",getpid());
    }
    printf("进程执行结束，id=%d\n",getpid());
    return 0;
}


